/*
 * @Description: 
 * @Version: 1.0
 * @Autor: lzc
 * @Date: 2021-06-25 09:59:10
 * @LastEditors: lzc
 * @LastEditTime: 2021-06-25 13:21:49
 */
#ifndef _MY_ELCDIF_H
#define _MY_ELCDIF_H 

#include <rtthread.h> 
#include "MIMXRT1052.h"
#include "core_cm7.h"
#include "MIMXRT1052_features.h"
//////////////////////////////////////////////////////////////////////////////////	 
//本程序只供学习使用，未经作者许可，不得用于其它任何用途
//ALIENTEK I.MX RT1052开发板
//RGB LCD驱动代码	   
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//创建日期:2018/1/4
//版本：V1.0
//版权所有，盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2014-2024
//All rights reserved									  
////////////////////////////////////////////////////////////////////////////////// 	

#define ELCDIF_LED(n)		(n?GPIO_PinWrite(GPIO3,2,1):GPIO_PinWrite(GPIO3,2,0))     //RGB LCD背光控制

#define LCD_PIXEL_FORMAT_RAW8       0X00    
#define LCD_PIXEL_FORMAT_RGB565     0X01    
#define LCD_PIXEL_FORMAT_RGB666     0X02       
#define LCD_PIXEL_FORMAT_XRGB8888   0X03      
#define LCD_PIXEL_FORMAT_RGB888     0X04     

//画笔颜色
#define WHITE         	 0xFFFF
#define BLACK         	 0x0000	  
#define BLUE		     0x001F  
#define BRED             0XF81F
#define GRED 			 0XFFE0
#define GBLUE			 0X07FF
#define RED           	 0xF800
#define MAGENTA       	 0xF81F
#define GREEN         	 0x07E0
#define CYAN          	 0x7FFF
#define YELLOW        	 0xFFE0
#define BROWN 			 0XBC40 //棕色
#define BRRED 			 0XFC07 //棕红色
#define GRAY  			 0X8430 //灰色
//GUI颜色

#define DARKBLUE      	 0X01CF	//深蓝色
#define LIGHTBLUE      	 0X7D7C	//浅蓝色  
#define GRAYBLUE       	 0X5458 //灰蓝色
//以上三色为PANEL的颜色 

#define LIGHTGREEN     	 0X841F //浅绿色
//#define LIGHTGRAY        0XEF5B //浅灰色(PANNEL)
#define LGRAY 			 0XC618 //浅灰色(PANNEL),窗体背景色

#define LGRAYBLUE        0XA651 //浅灰蓝色(中间层颜色)
#define LBBLUE           0X2B12 //浅棕蓝色(选择条目的反色)
///////////////////////////////////////////////////////////////////////
//用户修改配置部分:

//定义颜色像素格式,一般用RGB565
#define LCD_PIXFORMAT				LCD_PIXEL_FORMAT_RGB565	

//LCD帧缓冲区首地址,这里定义在SDRAM里面.
#define LCD_FRAME_BUF_ADDR			0X80200000  
 //定义一些常用的数据类型短关键字 
typedef uint32_t  u32;
typedef uint16_t u16;
typedef uint8_t  u8;

typedef __IO uint32_t  vu32;
typedef __IO uint16_t vu16;
typedef __IO uint8_t  vu8;

//LCD LTDC重要参数集
typedef struct  
{							 
	u32 pwidth;			//LCD面板的宽度,固定参数,不随显示方向改变,如果为0,说明没有任何RGB屏接入
	u32 pheight;		//LCD面板的高度,固定参数,不随显示方向改变
	u16 hsw;			//水平同步宽度
	u16 vsw;			//垂直同步宽度
	u16 hbp;			//水平后廊
	u16 vbp;			//垂直后廊
	u16 hfp;			//水平前廊
	u16 vfp;			//垂直前廊 
	u8 activelayer;		//当前层编号:0/1	
	u8 dir;				//0,竖屏;1,横屏;
	u16 width;			//LCD宽度
	u16 height;			//LCD高度
	u32 pixsize;		//每个像素所占字节数
}_elcdif_dev; 

extern _elcdif_dev lcdelcdif;	//管理LCD LTDC参数

void ELCDIF_Init(void);
void ELCDIF_PinInit(void);
void ELCDIF_Display_Dir(u8 dir);
u16 ELCDIF_PanelID_Read(void);
void ELCDIF_ClockInit(u8 loopdiv,u8 postdiv,u8 lcdif1prediv,u8 lcdif1div);
void ELCDIF_Draw_Point(u16 x,u16 y,u32 color);
u32 ELCDIF_Read_Point(u16 x,u16 y);
void ELCDIF_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u32 color);
void ELCDIF_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color);
void ELCDIF_Clear(u32 color);
void ELCDIF_Switch(u8 sw);
void my_lcd_init(void);
#endif

